\documentclass[]{beamer}
% Class options include: notes, notesonly, handout, trans,
%                        hidesubsections, shadesubsections,
%                        inrow, blue, red, grey, brown

% Theme for beamer presentation.
\usepackage[utf8]{inputenc}
\usepackage{ulem}
\usepackage{beamerthemesplit} 
\usepackage{graphicx}
\usepackage{listings}
\usepackage{tabularx}
 
\setbeamertemplate{footline}[frame number]
\title{Software Engineering\\System Design Document}   
\author{Adrian Nembach, Udo Schlegel, Sirui Liu}                 
\institute{}     
\date{\today}                 

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

                           

\section[Inhalt]{}

\begin{frame}
   \begin{center}
     \begin{Huge}
       Inhalt
     \end{Huge}
   \end{center}
\end{frame}

\begin{frame}
\frametitle{Inhalt}
  \tableofcontents[hideothersubsections]
\end{frame}


\section{Übersicht}

\begin{frame}
   \begin{center}
     \begin{Huge}
       Übersicht
     \end{Huge}
   \end{center}
\end{frame}

\subsection{Übersicht}
\begin{frame}
  \frametitle{Übersicht} 
  \begin{itemize}
    \item Zweck
    \item Designziele
    \item Ideen %%%%%%%%%%%%%Wie wir auf die Idee gekommen sind diese Architektur zu benutzen
  \end{itemize}

\end{frame}

\begin{frame}
  \begin{center}
   \includegraphics[scale=0.3]{bsp2.png}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
   \includegraphics[scale=0.3]{bsp1.png}
  \end{center}
\end{frame}

\section{Architektur}
\begin{frame}
   \begin{center}
     \begin{Huge}
       Architektur
     \end{Huge}
   \end{center}
\end{frame}

\subsection{Subsysteme}
\begin{frame}
  \frametitle{Subsysteme} 
  \begin{itemize}
    \item Display
    \item ProductManagement
    \item UserManagement
    \item OrderManagement
    \item DataManagement %Wie wir auf die Idee gekommen sind diese Architektur zu benutzen
  \end{itemize}
\end{frame}

\subsection{Teilzerlegung}
\begin{frame}
\frametitle{Teilzerlegung}
  \begin{center}
   \includegraphics[scale=0.3]{Subsystems.jpg}
  \end{center}
\end{frame}

\begin{frame}
\frametitle{Teilzerlegung}
  \begin{center}
   \includegraphics[scale=0.3]{Subsystems2.jpg}
  \end{center}
\end{frame}

\subsection{Components Diagramm}
\begin{frame}
\frametitle{Components Diagramm}
\begin{center}
 \includegraphics[scale=0.25]{Components.jpg}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Components Diagramm}
\begin{center}
 \includegraphics[scale=0.22]{Components2.png}
\end{center}
\end{frame}


\subsection{Klassen Diagramm}
\begin{frame}
\frametitle{Klassen Diagramm}
  \begin{center}
   \includegraphics[scale=0.2]{ClassDiagram.jpg}
  \end{center}
\end{frame}

\begin{frame}
\frametitle{Klassen Diagramm}
  \begin{center}
   \includegraphics[scale=0.3]{ClassDiagrammPres.png}
  \end{center}
\end{frame}


\subsection{Hardware/Software mapping}
\begin{frame}
\frametitle{Hardware/Software mapping}
\begin{center}
 \includegraphics[scale=0.4]{HardSoft.png}
\end{center}
\end{frame}

\subsection{Sicherheit}
\begin{frame}
\frametitle{Sicherheit}
  \begin{itemize}
    \item Differenzierung zwischen Kunden und Betreiber
    \item Keine direkte Kommunikation zwischen Benutzer und Datenbank
    \item Zwischenebenen
  \end{itemize}
\end{frame}

\section{Testing}
\begin{frame}
   \begin{center}
     \begin{Huge}
       Testing
     \end{Huge}
   \end{center}
\end{frame}

\subsection{Testing}
\begin{frame}
\frametitle{Testing}
Zu testende Elemente:
  \begin{itemize}
    \item User
    \item Product
    \item Order
    \item Shopping Cart
    \item Owner Client
    \item User Client
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Testing}
Wir besprechen
  \begin{itemize}
    \item User
    \item \sout{Product}
    \item \sout{Order}
    \item Shopping Cart
    \item \sout{Owner Client}
    \item User Client
  \end{itemize}
\end{frame}

\begin{frame}
\frametitle{Strategie}
Das System wird per Bottom-Up Strategie auf seine Integrität überprüft, dabei werden die Subsysteme in verschiedenen Kombinationen auf ihre zusammenhängende Lauffähigkeit überprüft.\\
Bei der Bottom-Up Strategie werden zuerst die untersten Kombinationen überprüft und das System wird langsam nach oben überprüft bis alles überprüft wurde. Im nachfolgenden kommen die wichtigsten Test-Cases zu dem Webshop-System:
\end{frame}

\subsection*{UserTest()}
\begin{frame}
\begin{scriptsize}
\begin{tabularx}{\linewidth}{lX}
\hline
\textit{Test-case identifier} & UserTest()\\
\textit{Feature to be tested} & Erstellt einen User in der Datenbank, editiert diesen und löscht ihn danach wieder.\\
\textit{Feature Pass/Fail Criteria} & Der Test erfüllt die Bedingungen, falls alle Methoden ausgeführt werden können, ohne dabei einen Fehler zu erzeugen.\\
\textit{Means of control} & Die UserTest() Methode wird gestartet über die Testkomponente Test, die dafür extra erstellt wird.\\
\textit{Data} & User-Daten für das erstellen des Users wird in der Methode UserTest() generiert und übergeben, eben gleiches gilt für das editieren.\\
\textit{Special requirements} & User-Management und Data-Management-Komponente.\\
\hline
\end{tabularx}
\end{scriptsize}

\end{frame}

\subsection*{ShoppingCartTest()}
\begin{frame}
\begin{scriptsize}
\begin{tabularx}{\linewidth}{lX}
\hline
\textit{Test-case identifier} & ShoppingCartTest()\\
\textit{Feature to be tested} & Fügt Produkte zum Warenkorb hinzu, gibt Warenkorb-Inhalt aus, löscht Produkte aus dem Warenkorb und bestellt ( CheckOut ).\\
\textit{Feature Pass/Fail Criteria} & Der Test erfüllt die Bedingungen, falls alle Methoden ausgeführt werden können, ohne dabei einen Fehler zu erzeugen.\\
\textit{Means of control} & Die ShoppingCartTest() Methode wird gestartet über die Testkomponente Test, die dafür extra erstellt wird.\\
\textit{Data} & Produkte sollten schon in der Datenbank vorhanden sein, benutzt diese zum hinzufügen und ausgeben, dieses wird verglichen mit soll Werten, gibt falls Falsch Fehler aus. Bestellt, überprüft dabei ob die Order in der Datenbank danach vorhanden ist und überprüft, ob die Emails an Owner und User geschickt wurden.\\
\textit{Special requirements} & Shopping Cart, Order-Management und Data-Management-Komponente.\\
\hline
\end{tabularx}
\end{scriptsize}

\end{frame}

\subsection*{UserClientTest()}
\begin{frame}
\begin{scriptsize}
\begin{tabularx}{\linewidth}{lX}
\hline
\textit{Test-case identifier} & UserClientTest()\\
\textit{Feature to be tested} & Logt einen Test-User, welcher in der Datenbanken vorhanden ist, ein, baut Seite auf, fügt Produkt Warenkorb hinzu, löscht Produkte aus Warenkorb, logt den User aus.\\
\textit{Feature Pass/Fail Criteria} & Der Test erfüllt die Bedingungen, falls alle Methoden ausgeführt werden können, ohne dabei einen Fehler zu erzeugen.\\
\textit{Means of control} & Die UserClientTest() Methode wird gestartet über die Testkomponente Test, die dafür extra erstellt wird.\\
\textit{Data} & Test-User-Daten und Produkt-Daten müssen schon in der Datenbank vorhanden sein.\\
\textit{Special requirements} & UserClient-, Produkt-Management-, Order-Management und Data-Management-Komponente.\\
\hline
\end{tabularx}
\end{scriptsize}

\end{frame}

\begin{frame}
  \frametitle{Referenzen} 
   \begin{thebibliography}{9}
     \bibitem{som}
     Sommerville,
     \emph{Software Engineering}.
     Addison Wesley,
     9nd Edition,
     \bibitem{camp}
     http://dev.campuseventfinder.com
     \bibitem{fol}
     Software Engineering Part 3: Design, Prof. Dr. Stefan Leue, University of Konstanz Chair for Software Engineering
   \end{thebibliography}
\end{frame}



\end{document}
